1. Field of the Invention
The invention generally relates to storage of system data and more particularly relates to storage of BIOS (built in operating system) data.
2. Description of the Related Art
When a computer system starts up, typically it first runs instructions on the processor(s) which are stored in a BIOS (built in operating system). These instructions may initialize the system and may help the system determine how it is configured and how it may operate. The code stored in a BIOS is typically written at a very low level, assembly language is typically the language of choice. As a result, instructions and data are often interwoven, such that determining what the code does and what the state of the system should be during or after execution of the code requires attention to fine details of the code.
This leads to difficulty in determining whether the code in the BIOS is written properly, and may lead to problems in diagnosing errors or failures in a computer system utilizing the BIOS. Additionally, this leads to difficulty in adjusting BIOS code. Without a unifying structure in place, a programmer assigned the task of changing the BIOS code to configure a computer system in a different way may need to comb through the entire BIOS code to verify that all variables or values are properly adjusted. It is not uncommon for BIOS code in current systems to occupy memory space on the order of 1 MB in size, so sifting through an entire BIOS may not be dismissed as a trivial task. Unfortunately, overlooking even one parameter in the startup of a system may lead to unpredictable performance of the system at a later time, and that unpredictable performance may not be obviously attributable to a problem in the startup configuration of the system.
Furthermore, validating the configuration of a system may likewise prove difficult when the information describing the condition of the system at startup is difficult to obtain. This may easily result when the data and instructions manipulating the data are intermingled as they often are in a BIOS. Thus, someone attempting to discover the state of a computer system by determining what the configuration parameters of a computer system were set to when the system started operating would be frustrated in their attempts to obtain this information. Again, the sheer size of the BIOS would make this a difficult and expensive task.
In one embodiment, the invention is an apparatus. The apparatus includes a first d-node having a pointer to a subordinate d-node and an identifier. The apparatus also includes a set of d-nodes, each d-node of the set of d-nodes having an identifier, a pointer to a peer d-node, a pointer to a subordinate d-node and a pointer to an entry. The set of d-nodes is accessible through the pointer of the first d-node. The apparatus also includes a set of entries, each entry of the set of entries having an identifier, a type, a value, and a pointer to an entry. The value of each entry embodies data corresponding to a configuration of a system.